package ar.com.viajes.dao.imp;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;





import ar.com.viajes.dao.ViajeDao;
import ar.com.viajes.dominio.Viaje;

public class ViajeDaoImpl  extends HibernateDaoSupport implements ViajeDao {

	@Override
	public List<Viaje> listaViajes() {
		Criteria criteria = getSession().createCriteria(Viaje.class);
		criteria.addOrder(Order.asc("id"));
	    List<Viaje> list = criteria.list();
        return list;

	}

	

	public void insertar(Viaje viaje) {
		getHibernateTemplate().save(viaje);

	}

	@Override
	public List<Viaje> getAll() {
		
		
		Criteria criteria = getSession().createCriteria(Viaje.class);
		criteria.add(Restrictions.like("estado", "ACTIVO"));
		List<Viaje> list = criteria.list();

		return list;

	}

	@Override
	public Viaje obtenerViaje(int id) {
	
		Criteria criteria = getSession().createCriteria(Viaje.class);
		criteria.add(Restrictions.eq("id", id));
		Viaje viaje1 = (Viaje) criteria.list().get(0);
	
		return viaje1;
	}

	@Override
	
	
	public void modificarViaje(Viaje viaje) {
		getHibernateTemplate().update(viaje);
	}

	
	public void eliminar(Viaje viaje) {
		getHibernateTemplate().delete(viaje);
	}

	
	public List<Viaje> obtenerViajeXEmpresaCiudad(int idEmp, int idCiu) {
		Criteria criteria = getSession().createCriteria(Viaje.class);
		if (idEmp == 0 && idCiu == 0) {
//			criteria.add(Restrictions.like("estado", "ACTIVO"));
			List<Viaje> viajes = criteria.list();
			return viajes;
			
		} else if (idEmp == 0 && idCiu != 0) {
			criteria.add(Restrictions.eq("ciudad.id", idCiu));
			List<Viaje> viajes = criteria.list();
			return viajes;
		} else if (idEmp != 0 && idCiu == 0) {
			criteria.add(Restrictions.eq("empresa.id", idEmp));
//			criteria.add(Restrictions.like("estado", "ACTIVO"));
			List<Viaje> viajes = criteria.list();
		
			return viajes;
		} else {
			
			criteria.add(Restrictions.eq("empresa.id", idEmp));
			criteria.add(Restrictions.eq("ciudad.id", idCiu));
	
			List<Viaje> viajes = criteria.list();

	
			return viajes;
		}

	}

}
